(function($) {
	
	//普通文本框
	$.addIssText = function(p){
		$.each($(".iss_text"), function(i, n) {
			$(n).css('width', '180');
		});
	};
	
	//备注文本框
	$.addIssRemark = function(p){
		$.each($(".iss_remark"), function(i, n) {
			//$(n).attr('size', '60');
			$(n).attr('maxlength', '50');
			$(n).css('width', '420');
		});
		$.each($(".iss_remark200"), function(i, n) {
			//$(n).attr('size', '60');
			$(n).attr('maxlength', '200');
			$(n).css('width', '520');
		});
	};
	
	//日历控件框
	$.addIssDatebox = function(p){
		$.each($(".iss_datebox"), function(i, n) {
			$(n).css('width', '120');
			$(n).datebox();
		});
	};
	
	//Select控件框
	$.addIssSelect = function (t, p) {
		
		p = $.extend({
			onChange:function(){
			}
		}, p);
		$(t).empty();
		if(p.optModel && p.optModel.length > 0){
			for(var i=0; i<p.optModel.length; i++){
				var option = '<option value="'+ p.optModel[i].key +'">'+ p.optModel[i].value +'</option>';

				if(p.optDefault != undefined && p.optDefault == p.optModel[i].key){
					option = '<option value="'+ p.optModel[i].key +'" selected>'+ p.optModel[i].value +'</option>';
				}
				
				$(t).append(option);
				//$(t).css("width","168");
			}
		}
		
		$(t).bind('change',function(){
			p.onChange.call();
		});
	},

	$.fn.selectutil = function (p) {
		$.addIssSelect($(this), p);
	};
	
	/*Magnifier
	$.addMagnifier = function (t, p) {

		p = $.extend({
			formid: '',
			linkName: '',
			width: 168,
			formatter: function(value, row, index){
	 	  		if(!value == false) {
	 	  			return '<a href="javascript:$.fn.addMagnifierlink(\''+ $(t).attr('id') +'\',\''+ value +'\','+ index +')">'+ value +'</a>';
	 			}
			},
			onClose:function(){
			},
			onBeforeOpen:function(){
			},
			onChange:function(){
			}
		}, p);
		
		$(t).searchbox({
				width: p.width,
				searcher:function(value, name) {
					
					var tid = $(t).attr('id');
					$('#'+tid).val(value);

					var dialogHtml = '<div id="'+ tid +'_div"><table id="'+ tid +'_datagrid" width="100%"></table></div>';
					$(document.body).prepend(dialogHtml);
					
					//对linkName进行处理
					for(var i=0; i<p.columns[0].length; i++){
						var column = p.columns[0][i];
						if(column.field == p.linkName){
							column.formatter = p.formatter;
						}
					}
					
					var scrollTop = window.document.documentElement.scrollTop;
					//$(document.body).css({"overflow":"hidden"});
					
					$("#" + tid + "_div").dialog({
						title: '放大镜',
						width: 620,  
						height: 352,  
						cache: false,
						modal: true,
						onBeforeClose: function(){
							p.onClose.call();
							//$(document.body).css({"overflow":"auto"});
						},
						onClose: function(){
							//$(this).remove();
							$(this).empty();
							$(this).detach();
						}
					});
		
					var queryParams = p.onBeforeOpen.call();
		
					var querys = null;
					if(queryParams) {
						querys = queryParams;
						querys[name] = value;
					}
					else {
						querys = $('#' + p.formid).serializeObject();
					}
					
					$("#" + tid + "_datagrid").datagrid({
						width: 'auto',
						height: 316,
						nowrap: true,
						autoRowHeight: false,
						striped: true,
						url: p.url,
						sortName: p.sortName,
						sortOrder: p.sortOrder,
						remoteSort: true,
						pagination:true,
						rownumbers:true,
						columns: p.columns,
						queryParams: querys,
						onLoadSuccess : function(data){
							//显示AJAX请求后的提示信息
							$.fn.ajaxmessage(data);
							window.document.documentElement.scrollTop = scrollTop;
						}
					});
					
					$("#" + tid + "_datagrid").datagrid('loaded');
				}
		});

		$('.searchbox-text', $(t).parent()).bind("change", function(e){
			
			var tid = $(t).attr('id');
			$('#'+tid).val($(this).val());
			var flagHiddenClean = true;
			var columns = p.columns;
			for(var i=0; i<columns[0].length; i++)
			{
				//如果不是先从放大镜中选择，不用删除查询条件
				var hidden = columns[0][i].hidden;
				var formel = columns[0][i].formel;
				if(hidden==true&&$('#' + formel).val()=="")
				{
					flagHiddenClean=false;
					break;
				}
			}
			
			for(var i=0; i<columns[0].length; i++){
				if(columns[0][i].formel){
					var formel = columns[0][i].formel;
					
					if($('#' + formel).is('input') || $('#' + formel).is('select'))
					{
						$('#' + formel).val('');
						if($('#' + formel).attr('searchboxname')&&flagHiddenClean)
						{
							$('#' + formel).searchbox('setValue', '');
							$("[name="+formel+"]").val('');
						}
						
					}
					else{
						$('#' + formel).html('');
					}
				}
			}
			
			p.onChange.call();
		});
	};
	*/
	/*$('.searchbox-text', $(t).parent()).bind("change", function(e){
		
		var tid = $(t).attr('id');
		$('#'+tid).val($(this).val());
		
		var columns = p.columns;
		for(var i=0; i<columns[0].length; i++){
			if(columns[0][i].formel){
				var formel = columns[0][i].formel;
				var hidden = columns[0][i].hidden;
				if(hidden==true&&$('#' + formel).val()=="")
				{
					break;
				}
				
				if($('#' + formel).is('input') || $('#' + formel).is('select'))
				{
					$('#' + formel).val('');
					if($('#' + formel).attr('searchboxname'))
					{
						$('#' + formel).searchbox('setValue', '');
					}
					$("[name="+formel+"]").val('');
				}
				else{
					$('#' + formel).html('');
				}
			}
		}
		
		p.onChange.call();
	});
};*/
	


	//Window
	$.addIssWindow = function (t, p) {
	    window.scrollTo(0,0);
		
		p = $.extend({
			title: '对话框',
			url : '',
			maximized : true,
			width:820,
			height:412,
			onClose:function(){
			}
		}, p);

		var divid = "win_div";
		var iframeid = "win_iframe";
		var windowHtml = '<div id="'+ divid +'"><iframe id="'+ iframeid +'" border="0" frameborder="0" framespacing="0" marginheight="0" marginwidth="0" vspale="0" scrolling="yes" height="98%" width="100%"></iframe></div>';
		$('body').prepend(windowHtml);
		
		$('#' + iframeid).attr('src', p.url);
		//$('body').css('overflow', 'hidden');
		
		$('#' + divid).window({
				title: p.title,  
				width: p.width,  
				height: p.height,
				modal: true,
				collapsible: false,
				minimizable: false,
				maximizable: true,
				maximized: p.maximized,
				closable:false,
				noheader:p.noheader,
				onBeforeClose: function(){
					p.onClose.call();
				},
				onClose: function(){
					$('body').css('overflow', 'auto');
					$('#win_div').empty();
					$('#win_div').detach();
					//$(this).remove();
				}
		});
	};
	
	$.fn.closeIssWindow = function () {
			//关闭Window
			if(parent.window && parent.window != window) {
				parent.$('#win_div').window('close');
				parent.$('#win_div').remove();
			}
	};

	$.fn.isswindow = function (p) {
		$.addIssWindow($(this), p);
	};

	
	//CurrencyAndAmount
	var CurrencyAndAmountRegExp = /^(\d{1,18})|(\d{1,18}\.)|(\d{1,17}\.\d{0,1})|(\d{1,16}\.\d{0,2})|(\.\d{1,2})$/;
	
	$.addAmount = function(p){
		
		//搜索所有的class为amount的text
		$.each($(".iss_amount"), function(i, n) {
			
			$(n).numberbox({
			    min:0,
			    precision:2,
			    groupSeparator:',',
			    decimalSeparator:'.',
			    prefix:''
			});
			$(n).css('width', '80');
			$(n).css('text-align', 'right');

			if ($(n).attr("readonly") == true || $(n).attr("disabled") == true) {
				$(n).numberbox('disabled', 'true');
			} else {
				$(n).focus(function() {
					$(n).val($(n).numberbox('getValue'));
					$(n).select();
				});
			}
			
			$(n).bind('blur',function(){
				var part = String($(n).numberbox('getValue')).split(".");
				if(part[0].length > 12){
					alert('金额整数位最大支持12位，请重新输入!');
					$(n).numberbox('clear');
				}
			});
			
		});
	};
	
	$.addAmount4 = function(p){
		//搜索所有的class为amount的text
		$.each($(".iss_amount4"), function(i, n) {
			$(n).numberbox({
			    min:0,
			    max:999999.99,
			    precision:2,
			    groupSeparator:',',
			    decimalSeparator:'.',
			    prefix:''
			});
			$(n).css('width','80');
			$(n).css('text-align','right');

			if ($(n).attr("readonly") == true || $(n).attr("disabled") == true) {
				$(n).numberbox('disabled', 'true');
			} else {
				$(n).focus(function() {
					$(n).val($(n).numberbox('getValue'));
					$(n).select();
				});
			}
			$(n).bind('blur',function(){
				var part = String($(n).numberbox('getValue')).split(".");
				if(part[0].length >6){
					alert('金额整数位最大支持6位，请重新输入!');
					$(n).numberbox('clear');
				}
			});
			
		});
	};
	
	//支持金额为负数
	$.addNegativeAmount = function(p){
		$.each($(".iss_NegativeAmount"), function(i, n) {
			$(n).numberbox({
			    precision:2,
			    groupSeparator:',',
			    decimalSeparator:'.',
			    prefix:''
			});
			$(n).css('width', '162');
			$(n).css('text-align', 'right');
			if ($(n).attr("readonly") == true || $(n).attr("disabled") == true) {
				$(n).numberbox('disabled', 'true');
			} else {
				$(n).focus(function() {
					$(n).val($(n).numberbox('getValue'));
					$(n).select();
				});
			}
			$(n).bind('blur',function(){
				var part = String($(n).numberbox('getValue')).split(".");
				if(part[0].length > 12){
					alert('金额整数位最大支持12位，请重新输入!');
					$(n).numberbox('clear');
				}
			});
		});
	};
	
	//不带货币符号的金额
	$.addPureAmount = function(p){
		
		//搜索所有的class为amount的text
		$.each($(".iss_pureamount"), function(i, n) {
			
			$(n).numberbox({
				min:0,
				precision:2,
				groupSeparator:',',
				decimalSeparator:'.'
			});
			
			$(n).css('width', '162');
			$(n).css('text-align', 'right');
			
			if ($(n).attr("readonly") == true || $(n).attr("disabled") == true) {
				$(n).numberbox('disabled', 'true');
			} else {
				$(n).focus(function() {
					$(n).val($(n).numberbox('getValue'));
					$(n).select();
				});
			}
			
			$(n).bind('blur',function(){
				var part = String($(n).numberbox('getValue')).split(".");
				if(part[0].length > 12){
					alert('金额整数位最大支持12位，请重新输入!');
					$(n).numberbox('clear');
				}
			});
			
		});
	};
	
	$.fn.amount = function () {

		var n = $(this);
		
		$(n).numberbox({
		    min:0,
		    precision:2,
		    groupSeparator:',',
		    decimalSeparator:'.',
		    prefix:'￥'
		});
		
		$(n).css('width', '162');
		$(n).css('text-align', 'right');

		if ($(n).attr("readonly") == true || $(n).attr("disabled") == true) {
				$(n).numberbox('disabled', 'true');
		} else {
			$(n).focus(function() {
				$(n).val($(n).numberbox('getValue'));
				$(n).select();
			});
		}
		
		$(n).bind('blur',function(){
			var part = String($(n).numberbox('getValue')).split(".");
			if(part[0].length > 12){
				alert('金额整数位最大支持12位，请重新输入!');
				$(n).numberbox('clear');
			}
		});

	};
	
	//万元
	$.addBigAmount = function(p){
	
		//搜索所有的class为amount的text
		$.each($(".iss_bigamount"), function(i, n) {
			
			$(n).numberbox({  
			    min:0,
			    precision:6,
			    decimalSeparator:'.'
			});
			
			$(n).css('width', '162');
			$(n).css('text-align', 'right');

			if ($(n).attr("readonly") == true || $(n).attr("disabled") == true) {
				$(n).numberbox('disabled', 'true');
			} else {
				$(n).focus(function() {
					$(n).val($(n).numberbox('getValue'));
					$(n).select();
				});
			}
			
			$(n).bind('blur',function(){
				var part = String($(n).numberbox('getValue')).split(".");
				if(part[0].length > 8){
					alert('金额整数位最大支持8位，请重新输入!');
					$(n).numberbox('clear');
				}
			});
		});
	};
	
	$.reverseFormatAmount = function (strData) { //反向格式化金额
		
		var rData = "";
		var strTemp = new String(strData);

		for(var i=0;i<strTemp.length;i++)
		{
			var cData = strTemp.charAt(i);
			if (cData!=",")
			{
				rData = rData+cData;
			}
		}
		return rData;
	};
	
	$.formatAmount  = function (strData, n)
	{
		var _result = CurrencyAndAmountRegExp.test(strData);
		if(_result == false){
			return strData;
		}
		
		n = n > 0 && n <= 6 ? n : 2;
		var formatData = parseFloat((strData + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
		var l = formatData.split(".")[0].split("").reverse();
		var r = formatData.split(".")[1];
		var t = "";
		for(i = 0; i < l.length; i ++ )
		{
			t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
		}
		return t.split("").reverse().join("") + "." + r;
	};

	//PercentageRate
	var PercentageRateRegExp = /^(\d{1})|(\d{1}\.\d{0,6})|(\.\d{1,6})$"/;
	
	$.addRate = function(p){
		
		//搜索所有的class为amount的text
		$.each($(".iss_rate"), function(i, n) {
			
			$(n).numberbox({  
			    min:0,  
			    max:99.999999,
			    precision:6,
			    decimalSeparator:'.'
			});
			
			$(n).css('width', '162');
			$(n).css('text-align', 'right');

			if ($(n).attr("readonly") == true || $(n).attr("disabled") == true) {
				$(n).numberbox('disabled', 'true');
			} else {
				$(n).focus(function() {
						$(n).val($(n).numberbox('getValue'));
						$(n).select();
				});
			}
			
		});
		
		$.each($(".iss_percent"), function(i, n) {
			
			$(n).numberbox({  
			    min:0,  
			    max:100.000000,
			    precision:6,
			    decimalSeparator:'.'
			});
			
			$(n).css('width', '162');
			$(n).css('text-align', 'right');

			if ($(n).attr("readonly") == true || $(n).attr("disabled") == true) {
				$(n).numberbox('disabled', 'true');
			} else {
				$(n).focus(function() {
						$(n).val($(n).numberbox('getValue'));
						$(n).select();
				});
			}
			
		});
		
	};
	
   $.addRate2 = function(p){
		
		//搜索所有的class为amount的text
		$.each($(".iss_rate2"), function(i, n) {
			
			$(n).numberbox({  
			    min:0,  
			    max:100.000000,
			    precision:6,
			    decimalSeparator:'.'
			});
			
			$(n).css('width', '162');
			$(n).css('text-align', 'right');

			if ($(n).attr("readonly") == true || $(n).attr("disabled") == true) {
				$(n).numberbox('disabled', 'true');
			} else {
				$(n).focus(function() {
						$(n).val($(n).numberbox('getValue'));
						$(n).select();
				});
			}
			
		});
	};
	
	$.addSoftRate = function(p){
		//搜索所有的class为amount的text
		$.each($(".iss_softRate"), function(i, n) {
			
			$(n).numberbox({  
			    min:0,  
			    max:999999.999999,
			    precision:6,
			    decimalSeparator:'.'
			});
			
			$(n).css('width', '162');
			$(n).css('text-align', 'right');
			
			if ($(n).attr("readonly") == true || $(n).attr("disabled") == true) {
				$(n).numberbox('disabled', 'true');
			} else {
				$(n).focus(function() {
						$(n).val($(n).numberbox('getValue'));
						$(n).select();
				});
			}
		});
	};
	
	//解析日期JSON
	$.formatJSONDate = function (dateJSON, delimiter) {
		var returnStr = "";
		
		if(dateJSON != null)
		{
			delimiter = delimiter == null ? "-" : delimiter;
			
			var year = 1900 + dateJSON.year;
			
			var month = 1 + dateJSON.month;
			
			month = month.toString().length == 1 ? "0"+month.toString() : month;
			
			var date = dateJSON.date.toString().length == 1 ? "0"+dateJSON.date.toString() : dateJSON.date;
			
			returnStr = year + delimiter + month + delimiter + date;
		}
		
		return returnStr;
	};
	
	//新版本放大镜
	$.fn.issNewMagnifier = function (p) {
		var t = this;
		return this.each(function () {
			$(document).ready(function () {
				$.addIssNewMagnifier(t, p);
			});
		});
	}; 
	
	
	//新版本放大镜
	$.addIssNewMagnifier = function (t, p) {
		//if (t.grid) return false; //return if already exist
		p = $.extend({
			formid: '',
			linkName: '',
			changeClear: true,
			pagination:true,
			changeIgnore: [],
			formatter: function(value, row, index){
	 	  		if(!value == false) {
	 	  			return '<a href="javascript:$.fn.magnifierlink(\''+ $(t).attr('id') +'\',\''+ value +'\','+ index +')">'+ value +'</a>';
	 			}
			},
			onClose:function(){
			},
			onBeforeOpen:function(){
			},
			onBeforeVaild:function(){
			}
		}, p);
		
		// 生成元素
		$(t).wrap('<div class="suggestBorder"></div>');
		
		var _aleft = $(t).actual('width');
		//$(t).parent().height(22);
		$(t).parent().width(_aleft+48);
		$(t).after('<A href="#"><SPAN class="suggest_magnifierimg">open</SPAN></A>');
		
		var _suggestImage = $(t).parent().find('a');

		//放大镜图片添加click
		$(_suggestImage).click(function (e) {
			var vaild = p.onBeforeVaild.call();
			if(vaild==false)
			{
				return;
			}
				
			//对linkName进行处理
			for(var i=0; i<p.columns[0].length; i++){
				var column = p.columns[0][i];
				if(column.field == p.linkName){
					column.formatter = p.formatter;
				}
			}
			
			var scrollTop = window.document.documentElement.scrollTop;
			
			$("#wowangz_Magnifier_div").dialog({
				title: p.title,  
				width: 620,  
				height: 430,  
				cache: false,
				modal: true,
				onClose: function(){
					p.onClose.call();
					//设置行开始位置为0
					$("#wowangz_Magnifier_datagrid").datagrid('options').pageNumber = 1;
					//清空datagrid数据
					$("#wowangz_Magnifier_datagrid").datagrid('loadData', { total: 0, rows: [] });
					
			    }
			});

			if(p.url==null||p.url==""){
					    alert("url is not null");
					    return;
			}
			
			if(p.linkName==null||p.linkName==""){
					    alert("linkName is not null");
					    return;
			}

			var queryParams = p.onBeforeOpen.call();

			var querys = null;
			if(queryParams) {
				querys = queryParams;
			}
			else {
				querys = $('#' + p.formid).serializeObject();
			}
			
			if(p.callSqlKey){
			    querys["callSqlKey"]=p.callSqlKey;
			}
			else{
				alert("callSqlKey is not null");
				return;
			}
			
			var dataColumns=p.columns;
			for(var i=0;i<dataColumns[0].length;i++){
					   //alert(dataColumns[0][i].field);
					   querys["column_data_"+i]=dataColumns[0][i].field;
					   //change uppercase
					   dataColumns[0][i].field=dataColumns[0][i].field;
			}

			$("#wowangz_Magnifier_datagrid").datagrid({
				width: 'auto',
				height: 390,
				nowrap: true,
				autoRowHeight: false,
				striped: true,
				url: p.url,
				sortName: p.sortName,
				sortOrder: p.sortOrder,
				remoteSort: true,
				pagination:p.pagination,
				rownumbers:true,
				columns: p.columns,
				queryParams: querys,
				onLoadSuccess : function(data){
					//显示AJAX请求后的提示信息
					$.fn.ajaxmessage(data);
					window.document.documentElement.scrollTop = scrollTop;
					$('div.panel.window div.datagrid-body').animate({scrollTop:0},document.body.scrollHeight);
					$("#wowangz_Magnifier_datagrid").datagrid('loaded');
				},
			    onBeforeLoad  : function(param){
			    	$("#wowangz_Magnifier_datagrid").datagrid('loading');
			    },
				onLoadError   : function(){
					alert("加载数据失败！");
				}
			});
			
		});

		//文本框域的内容被改变。
		$(t).change(function (e) {
		   if(p.changeClear){
			var columns = p.columns;
			for(var i=0; i<columns[0].length; i++){
				if(columns[0][i].formel){
					var formel = columns[0][i].formel;
					var ignore = false;
					for(var j=0;j<p.changeIgnore.length;j++){
						if(p.changeIgnore[j] == formel){
							ignore = true;
						}
					}
					if(ignore){
						continue;
					}
					if($('#' + formel).get(0).tagName == 'INPUT'){
						$('#' + formel).val('');
					}
					else{
						$('#' + formel).html('');
					}
				}
			}
		  }
		});
		
		//文本框某个键盘按键被松开
		$(t).keyup(function (e) {
			if(e.keyCode == 13){
				$(_suggestImage).click();
			}
		});
	};
	
	
	$.fn.magnifierlink = function (tid, value, index) {
		
		//1.link后的值给输入框
		$('#'+tid).val(value);
		
		var allData = $("#wowangz_Magnifier_datagrid").datagrid('getData');
		var columns = $("#wowangz_Magnifier_datagrid").datagrid('options').columns;
		var rowData = allData.rows[index];

		//2.link后给hidden赋值
		for(var i=0; i<columns[0].length; i++){
			var field = columns[0][i].field;
			if(columns[0][i].formel){
				var formel = columns[0][i].formel;
				if($('#' + formel).get(0).tagName == 'INPUT'){
					$('#' + formel).val(rowData[field]);
				}
				else{
					$('#' + formel).html(rowData[field]);
				}
			}
		}
		
		//3.link后关闭dialog
		$('#wowangz_Magnifier_div').dialog('close');
		
	};
	
	
	
	$.fn.addSoftRate = function (p) {
		$.addSoftRate(p);
	};
		
	$(document).ready(function () {
		$.addIssText();
		$.addIssRemark();
		$.addIssDatebox();
		$.addAmount();
		$.addAmount4();
		$.addNegativeAmount();
		$.addPureAmount();
		$.addBigAmount();
		$.addRate();
		$.addRate2();
		$.addSoftRate();
	});

})(jQuery);